Skip to content

Increase code coverage on dynamodb-enhanced module#6700

Open
andreas-grafenberger wants to merge 12 commits intoaws:masterfrom
anasatirbasa:437-increase_test_coverage
Open

Increase code coverage on dynamodb-enhanced module#6700
andreas-grafenberger wants to merge 12 commits intoaws:masterfrom
anasatirbasa:437-increase_test_coverage

Conversation

@andreas-grafenberger
Copy link
Copy Markdown
Contributor

@andreas-grafenberger andreas-grafenberger commented Feb 2, 2026

Motivation and Context

The goal of this work is to increase unit, functional, and integration code coverage for the
aws-sdk-java-v2/services-custom/dynamodb-enhanced module.

Initial coverage:

  • Class: 97%
  • Method: 85%
  • Line: 87%
  • Branch: 64%

Target coverage:

  • Class: ≥ 98%
  • Method: ≥ 92%
  • Line: ≥ 92%
  • Branch: ≥ 85%

Achieved coverage:

  • Class: 99%
  • Method: 92%
  • Line: 94%
  • Branch: 91%

These results exceed the defined targets and significantly improve confidence in the correctness and stability of the enhanced DynamoDB module.


Modifications

This pull request expands code coverage across the DynamoDB Enhanced Client by introducing new unit, functional, and integration tests targeting previously uncovered or partially covered code paths.


Testing

  • Existing test suites were executed without regression.
  • New tests were added to specifically target uncovered branches and methods.
  • All new and existing tests pass successfully.
  • Coverage was measured locally after test execution to validate improvements.

Screenshots

Initial coverage:

codeCoverage-before

Achieved coverage:

codeCoverage-after

Types of changes

  • Bug fix (non-breaking change which fixes an issue)
  • New feature (non-breaking change which adds functionality)

Checklist

  • I have read the CONTRIBUTING document
  • Local run of mvn install succeeds
  • My code follows the code style of this project
  • My change requires a change to the Javadoc documentation
  • I have updated the Javadoc documentation accordingly
  • I have added tests to cover my changes
  • All new and existing tests passed
  • I have added a changelog entry. Adding a new entry must be accomplished by running the scripts/new-change script and following the instructions. Commit the new file created by the script in .changes/next-release with your changes.
  • My change is to implement 1.11 parity feature and I have updated LaunchChangelog

License

  • I confirm that this pull request can be released under the Apache 2 license

@andreas-grafenberger andreas-grafenberger changed the title 437 Increase test coverage Increase test coverage Feb 2, 2026
@anasatirbasa anasatirbasa force-pushed the 437-increase_test_coverage branch from a024740 to fcfbd00 Compare February 10, 2026 17:09
@andreas-grafenberger andreas-grafenberger changed the title Increase test coverage Increase code coverage Feb 10, 2026
@andreas-grafenberger andreas-grafenberger changed the title Increase code coverage Increase code coverage on dynamodb-enhanced module Feb 10, 2026
@anasatirbasa anasatirbasa force-pushed the 437-increase_test_coverage branch from 337c117 to f97adfc Compare February 11, 2026 14:26
@andreas-grafenberger andreas-grafenberger marked this pull request as ready for review February 16, 2026 15:56
@andreas-grafenberger andreas-grafenberger requested a review from a team as a code owner February 16, 2026 15:57
EnumAttributeConverter<Person> personConverter = EnumAttributeConverter.createWithNameAsKeys(Person.class);

Person john = personConverter.transformTo(AttributeValue.fromS("JOHN"));
personConverter.transformTo(AttributeValue.fromS("JOHN"));
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I think we should also check the correct enum value is returned, something like

assertThat(personConverter.transformTo(AttributeValue.fromS("JOHN"))).isEqualTo(Person.JOHN);

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Good one, thank you! The test should be fine now.

import software.amazon.awssdk.services.dynamodb.model.ReturnValue;
import software.amazon.awssdk.services.dynamodb.model.TableDescription;

public class AnnotatedBeanTableSchemaTest extends LocalDynamoDbSyncTestBase {
Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can we use a parameterized test and remove the Immutable and Async variants? They are largely the same code.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

We can do it for Bean and Immutable, but not for Sync and Async since there is used a different client type of DynamoDb (sync vs async and is initialized based on inherited test class):

  • LocalDynamoDbSyncTestBase is used to create DynamoDbClient
  • LocalDynamoDbAsyncTestBase is used to create DynamoDbAsyncClient

Also, there is an existing "pattern" where tests are already separated based on the used DynamoDb client type (tests for Async client usually starts with "Async*").

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Update - I parameterized the mentioned tests (in terms of Bean and Immutable variants) :

  • AnnotatedBeanTableSchemaTest.java
  • AnnotatedImmutableTableSchemaTest.java

as: AnnotatedTableSchemaTest.java, and:

  • AsyncAnnotatedBeanTableSchemaTest.java
  • AsyncAnnotatedImmutableTableSchemaTest.java

as: AsyncAnnotatedTableSchemaTest.java

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, thanks!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants